package com.zjl.redis.第13章_缓存双写一致性;

/**
 * (1)更新数据库数据
 * (2)数据库会将操作信息写入binlog日志当中
 * (3)订阅程序提取出所需要的数据以及key
 * (4)另起一段非业务代码，获得该信息
 * (5)尝试删除缓存操作，发现删除失败
 * (6)将这些信息发送至消息队列
 * (7)重新从消息队列中获得该数据，重试操作。
 *
 * 1.可以把要删除的缓存值或者是要更新的数据库值暂存到消息队列中(例如使用Kafka/RabbitMQ等)。
 * 2.当程序没有能够成功地删除缓存值或者是更新数据库值时，可以从消息队列中重新读取这些值，然后再次进行删除或更新。
 * 3.如果能够成功地删除或更新，我们就要把这些值从消息队列中去除，以免重复操作，
 *   此时，我们也可以保证数据库和缓存的数据一致了，否则还需要再次进行重试
 * 4.如果重试超过的一定次数后还是没有成功，我们就需要向业务层发送报错信息了，通知运维人员。
 *
 * 也可以使用 canal 阿里的开源软件实现,强一致性
 * @see E1_canal简介
 */
public class D_强一致性 {
}
